package com.company.L_6_1;

import java.lang.reflect.Method;
import java.util.ArrayList;

/**
 * 通过反射了解综合泛型的本质
 */
public class L_6_1 {
    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        ArrayList<String> list1 = new ArrayList<String>();
        list1.add("hello");
        list1.add("20");

        Class c1 = list.getClass();
        Class c2 = list1.getClass();
        //c1 ==c2 说明编译之后的泛型是去泛型化的
        System.out.println(c1 == c2);
        //java 中集合的泛型 是防止输入错误的 只在编译阶段有效 绕过编译就无效了

        try {
            Method m = c2.getMethod("add",Object.class);
            m.invoke(list1,100);
            //类型改变
            System.out.println(list1.toString());
//            for(String s : list1){
//                System.out.println(s); //出错 类型改变
//            }
        }catch (Exception e){
            e.printStackTrace();
        }

    }
}
